| Total Complexity | 2 |
| Total Lines | 27 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | import { Inject } from '@nestjs/common'; |
||
| 5 | |||
| 6 | export class IsMaximumTimeSpentReached { |
||
| 7 | constructor( |
||
| 8 | @Inject('IEventRepository') |
||
| 9 | private readonly eventRepository: IEventRepository, |
||
| 10 | @Inject('ILeaveRepository') |
||
| 11 | private readonly leaveRepository: ILeaveRepository |
||
| 12 | ) {} |
||
| 13 | |||
| 14 | public async isSatisfiedBy( |
||
| 15 | event: Event, |
||
| 16 | newTime: number = 0 |
||
| 17 | ): Promise<boolean> { |
||
| 18 | const user = event.getUser(); |
||
| 19 | const date = event.getDate(); |
||
| 20 | |||
| 21 | const [eventTime, leaveTime] = await Promise.all([ |
||
| 22 | this.eventRepository.sumOfTimeSpentByUserAndDate(user, date), |
||
| 23 | this.leaveRepository.sumOfDurationLeaveByUserAndDate(user, date) |
||
| 24 | ]); |
||
| 25 | |||
| 26 | const timeSpent = eventTime + leaveTime; |
||
| 27 | const dayTime = event.getId() |
||
| 28 | ? timeSpent - event.getTime() + newTime |
||
| 29 | : timeSpent + event.getTime(); |
||
| 30 | |||
| 31 | return dayTime > Event.MAXIMUM_TIMESPENT_PER_DAY; |
||
| 32 | } |
||
| 34 |